#include <stdio.h>
#include <string.h>

// 字符串的最大长度
#define MAX_STR_LEN 1024
// 字符串的最大数量
#define MAX_NUM_STR 1024

int main() {
  // 使用二维字符数组str存储文章。
  // 二维数组的每一行（第0维）表示一行文本。
  char str_array[MAX_NUM_STR][MAX_STR_LEN] = {0};
  // 定义二维数组后，将数组元素都初始化为0。

  // 使用循环读取每一行文本, n记录当前已经读取的行数
  int n = 0;
  while (1) {
    // 从标准输入（键盘）读取一行文本到一维数组str[n]
    fgets(str_array[n], MAX_STR_LEN, stdin);
    // printf("log: get string: %s\n", str[n]);
    int len = strlen(str_array[n]);
    // 判断这一个字符串最后一个有效字符是不是'#'
    if (((len >= 2) && (str_array[n][len - 1] == '\n') && (str_array[n][len - 2] == '#'))
        // fgets有可能将每一行末尾的换行符读入字符串
        || ((str_array[n][len - 1] != '\n') && (str_array[n][len - 1] == '#'))) {
      // 说明输入已经结束
      n++;
      break;
    }
    n++; // 读入数量累加1
  }
  // printf("log: get %d lines.\n", n);

  // 使用指针ptr遍历文章中的每一行文本.
  // ptr是一个指向长度为MAX_STR_LEN的字符数组“char [MAX_STR_LEN]”的指针.
  char(*ptr)[MAX_STR_LEN];
  ptr = str_array;
  // 二维数组的数组名，实际上是指向首行数组（即一个一维数组）的指针，
  // 因此其类型与ptr是相同的.
  int i = 0;
  for (i = 0; i < n; i++) {
    // printf("log: process string: %s\n", *ptr);
    //  现在处理ptr指向的一位字符数组（即字符串）
    char *str = *ptr;
    int len = strlen(str);
    int j = 0;
    for (j = 0; j < strlen(str) - 3; j++) {
      // 从头遍历到尾，查找所有的单词the
      if ((str[j] == 't') && (str[j + 1] == 'h') &&
          (str[j + 2] == 'e') &&                      /* 连续的三个the */
          ((j >= 1 && str[j - 1] == ' ') || (j == 0)) /* 是一个独立的单词 */
          && ((str[j + 3] == ' ' || str[j + 3] == '.' || str[j + 3] == '\0'))) {
        // 发现一个the
        // printf("log: find 'the' at %d\n", j);
        // 删除the, 即将字符串3个字符之后的内容移动到前面
        int k = 0;
        for (k = j + 3; k < strlen(str); k++) {
          str[k - 3] = str[k];
        }
        str[k - 3] = '\0'; // 在字符串最后补充'\0'作为结尾
        // printf("log: after delete: %s\n", str);
      }
    }
    // 如果当前字符串是文章结尾，删除最后的'#'，替换为'\0'
    int k = 0;
    for (k = 0; k < strlen(str); k++)
      if (str[k] == '#')
        str[k] = '\0';

    printf("%s", str);
    ptr++;
  }
  return 0;
}
